#ifndef RESOURCE_H
#define RESOURCE_H

#include <ctime>
#include "config.h"

/********************************************************************************/
/*                                 管理总体资源                                 */
/*                                  无线程安全                                  */
/********************************************************************************/
class Resource{
    private:
    protected:
    //金钱,能量,游戏开始时间
    double money, energy;
    GameTimeType startTime;

    public:
    Resource();

    Resource(double money, double energy);

    /********************************************************************************/
    /*                                 获取金钱数量                                 */
    /********************************************************************************/
    [[nodiscard]] inline double getMoney()const;

    /********************************************************************************/
    /*                                 获取能源数量                                 */
    /********************************************************************************/
    [[nodiscard]] inline double getEnergy()const;

    /********************************************************************************/
    /*                                   增加金钱                                   */
    /********************************************************************************/
    inline void addMoney(double add){ money += add; }

    /********************************************************************************/
    /*                                   增加能源                                   */
    /********************************************************************************/
    inline void addEnergy(double add){ energy += add; }

    /********************************************************************************/
    /*                                   消耗金钱                                   */
    /********************************************************************************/
    bool consumeMoney(double consume);

    /********************************************************************************/
    /*                                   消耗能源                                   */
    /********************************************************************************/
    bool consumeEnergy(double consume);
};

/********************************************************************************/
/*                               获取软件计时时间                               */
/*                                   线程安全                                   */
/********************************************************************************/
GameTimeType NowTime();

/********************************************************************************/
/*                                   增加计时                                   */
/*                                   线程安全                                   */
/********************************************************************************/
void TickAdd();

/********************************************************************************/
/*                                  计时初始化                                  */
/*                                   线程安全                                   */
/********************************************************************************/
void TickInit();

#endif

